//app.js
App({

  /**
   * 1，设置小程序缓存
   * 2，获取小程序用户信息并写入globalData
   */
  onLaunch: function () {
    var that = this
    // 设置本地缓存
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)     //设置缓存（内存里）
    var accountInfo = wx.getAccountInfoSync();
    this.globalData.appid = accountInfo.miniProgram.appId       //获取appID
    
  //   // 直接调用 getUserInfo 获取头像昵称（老API，无法获取真实的用户信息）
  //   wx.getSetting({
  //     success (res){
  //       if (res.authSetting['scope.userInfo']) {        //用户授权    
  //         wx.getUserInfo({
  //           success: function(res) {
  //             that.globalData.userInfo = res.userInfo
  //           }
  //         });
  //         wx.navigateTo({
  //           url: '../login/login'
  //         })
  //       }
  //     }
  //   });
  //  console.log('老API获取的用户信息：',that.globalData);

    //获取用户信息的最新API
    wx.getSetting({
      success(res) {
        if (res.confirm) {      //用户授权
          wx.getUserProfile({
          desc: "获取你的昵称、头像、地区及性别",
          success: res => {
            console.log(res)
            that.globalData.userInfo = res.userInfo;
          },
          fail: res => {
            //拒绝授权
            that.showErrorModal('您拒绝了请求');
            return;
          }
        })} else if (res.cancel) {
          //拒绝授权 showErrorModal是自定义的提示
          that.showErrorModal('您拒绝了请求');
          return;
        }
      }   
    });
    //console.log('新API获取的用户信息：',that.globalData);
  },

/**
 * 1，获取唯一标识小程序的openid
 * 2，通过openid判断小程序对应的顾客是否为新顾客
 * 3，获取小程序的其他信息并写入globalData
 */
  getOpenId: function () {
    var that = this
    return new Promise(function(resolve, reject) {
      wx.login({
        success: res => {
          wx.request({      //向服务器发起请求
            url: that.globalData.serveraddr + '/customer/getopenid',      //服务器目录
            data: {   //请求参数
              code: res.code,       //小程序服务器在微信官网查询openid时用到
              appid: that.globalData.appid
            },
            success: res => {
              if (res.statusCode == 200) {
                that.globalData.openid = res.data.openid
              }else {
                console.log('获取用户登录态失败！' + res.errMsg)
              };
              //如果成功从服务器获取openid，执行下面函数
              if (that.globalData.openid) {
                wx.request({
                  url: that.globalData.serveraddr + '/customer/login',
                  //data是需要传递到后端的两个参数，参数名称需要和Customer类中的属性名一致
                  data: "nickname=" + that.globalData.userInfo.nickName + "&openid=" + that.globalData.openid,    //url的参数
                  method: "POST",
                  header: {
                    "Content-Type": "application/x-www-form-urlencoded"
                  },
                  success: r => {
                    // globalData存储服务器返回的顾客信息
                    if (r.data.result.code == 200) {
                      //console.log('r.data的值',r.data);            
                      that.globalData.limit = r.data.result.limit;
                      that.globalData.cusid = r.data.result.cusid
                      that.globalData.isHaveOrder = r.data.result.isHaveOrder
                      that.globalData.isLogin = true
                      if (r.data.result.isAdmin) {        //是否为系统顾客
                        that.globalData.isAdmin = true
                      }
                      resolve(that.globalData);       //then函数在login.js里
                    }else {           //服务器返回给前台数据失败
                      wx.showModal({
                        title: '提示',
                        content: '用戶获取失败'
                      })
                      reject('error')
                    }
                  }
                })
              };
            }
          })
        }
      })
    })
  },

  // 其他界面监听app.globalData，而不是在app.js中监听，而且这个监听方法，需要一个回调方法。（没有用到）
  watch: function (method) {
    var obj = this.globalData;
    Object.defineProperty(obj, "isAdmin", {
      configurable: true,
      enumerable: true,
      set: function (value) {
        this._isAdmin = value;
        method(value);
      },
      get: function () {
        // 可以在这里打印一些东西，然后在其他界面调用getApp().globalData.isAdmin的时候，这里就会执行。
        return this._isAdmin
      }
    })
  },

  globalData: {
    userInfo: {},
    openid: null,
    isLogin: false,
    isAdmin: false,
    serveraddr: "http://127.0.0.1:3000",
    //serveraddr: "http://192.168.43.43:3000",    //电脑连接手机热点的ip
    cusid: null,
    isHaveOrder: false,
    limit: false,
    appid: null
  }
})